A storage system may include one or more storage devices for storing and retrieving information. A storage operating system executing on the storage system may functionally organize the storage system by, e.g., invoking storage operations in support of a storage service implemented by the storage system. The storage system may be implemented in accordance with various storage architectures including, but not limited to, a network-attached storage environment, a storage area network and/or a disk assembly directly attached to a host computer (“client”).
Storage systems commonly have a storage operating system, e.g., to respond to input/output requests and/or to perform housekeeping tasks associated with the storage systems on which they operate. The storage operating system of the storage system may implement a high-level module, e.g., a file system, to logically organize the information stored on the disks as a hierarchical structure of directories, files and/or blocks. A type of file system is a write-anywhere file system. An example of a write-anywhere file system that is configured to operate on a storage system is the Write Anywhere File Layout (WAFL®) file system available from Network Appliance, Inc., of Sunnyvale, Calif.
The storage system may be managed by a plurality of computing devices, referred to herein as “nodes.” In many conventional storage systems, an entire hard disk or solid state drive (SSD) is the smallest unit of capacity that could be provisioned by a node. In many systems that do not share storage devices (e.g., hard disks or SSDs), a single “owning” node generally handles the storage device that is assigned to it. In these systems, the management of the storage device is inefficient. For example, current storage systems typically require a dedicated disk to store some types data, e.g., configuration data, which may be necessary for initializing a node, parity data for redundant arrays of independent disks (RAID) etc. Some of the storage systems may even require a dedicated disk for each node. On platforms with a relatively small number of disks, for example, 14 or 24, this requirement results in a significant storage efficiency disadvantage.
In current storage architecture, a disk is typically managed by a single node, where only one node is responsible for performing input/output to the disk. In current storage architectures where a disk is shared between nodes, a centralized disk and storage state management mechanisms are employed. Further, current storage architectures do not provide a disk state management model that is robust to tolerate unreliable hardware components and resilient to failures that could otherwise greatly impact resiliency and availability in a shared disk architecture. Thus, the management of a storage device in prior storage systems having either non-shared or shared storage devices are inefficient.